package com.example.demo.util;

import java.text.DecimalFormat;
import java.util.Date;
import java.util.UUID;

public class NumberUtil {
	/**
     * <br>格式是 20,000,000.00
     * <br>整数部分3位分隔,小数部分位数2位
     */
    public static final String S3D2_FORMAT="#,##0.00";
    /**
     * <br>格式是 20000000.00
     * <br>小数部分位数2位
     */
    public static final String S0D2_FORMAT="#0.00";


    public static String format(double obj,String pattern){
        DecimalFormat df=new DecimalFormat(pattern);
        return df.format(obj);
    }

    public static String defaultFormat(double obj){
        return format(obj,S0D2_FORMAT);
    }

    public static double defaultFormat4Count(double obj){
        return Double.parseDouble(format(obj,S0D2_FORMAT));
    }

    /**
     * 得到不重复的订单单号
     * 格式：
     * 2014-06-04 10:06:30.052
     * 140604100630052
     *
     * @return
     */
    public synchronized static long getNumber(){
        try {
            Thread.sleep(1);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        return Long.valueOf(DateUtil.format(new Date(), DateUtil.DATETIME_PATTERN_ORDERNUMBER));
    }

    public synchronized static String getStrNumber(){
        return getNumber()+"";
    }


    /**
     * 返回随机的 abs long
     * @return
     */
    public static long randomAbsLong(){
        return Math.abs(UUID.randomUUID().getMostSignificantBits());
    }


    /**
     * 判断是否能转成int类型
     * @param str
     * @return
     */
    public static boolean canParseInt(String str){
        try{
            Integer.parseInt(str);
        }catch(Exception e){
            return false;
        }
        return true;
    }


    public static long toLong(Object obj){
        if(obj==null){
            throw new RuntimeException("obj不能为null!");
        }
        return Long.parseLong(obj.toString());
    }


}
